﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
//using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;

namespace WFAPasswordRegExp
{
    public partial class frmTeste : Form
    {
        public frmTeste()
        {
            InitializeComponent();
        }

		//[StringLengthValidator(1,20)]
		//[NotNullValidator]
        private void btVerficar_Click(object sender, EventArgs e)
        {
			txtSenha_TextChanged(sender, e);
        }

		private void txtSenha_TextChanged(object sender, EventArgs e)
		{
			string password = txtSenha.Text.Trim();

			bool number = cbNumero.Checked;
			bool special = cbEspecial.Checked;
			bool upper = cbMaiusculo.Checked;
			bool lower = cbMinusculo.Checked;

			Feedback resultado;

			int limiteMinino = Convert.ToInt16(nudQtde.Value);

			resultado = Password.verficarQtdeCaracter(password, limiteMinino);

			if (!resultado.Status)
			{
				lblResultado.Text = resultado.Message;
				return;
			}

			resultado = Password.verificar(password, number, special, upper, lower);

			if (!resultado.Status)
			{
				lblResultado.Text = resultado.Message;
			}
			else
			{
				lblResultado.Text = "Senha válida!";
			}
		}

		private void frmTeste_Load(object sender, EventArgs e)
		{
			lblResultado.Text = string.Empty;
			cbNumero.CheckState = CheckState.Checked;
			cbEspecial.CheckState = CheckState.Checked;
			cbMaiusculo.CheckState = CheckState.Checked;
			cbMinusculo.CheckState = CheckState.Checked;
		}

		private void cbNumero_CheckedChanged(object sender, EventArgs e)
		{
			txtSenha_TextChanged(sender, e);
		}

		private void cbEspecial_CheckedChanged(object sender, EventArgs e)
		{
			txtSenha_TextChanged(sender, e);
		}

		private void cbMaiusculo_CheckedChanged(object sender, EventArgs e)
		{
			txtSenha_TextChanged(sender, e);
		}

		private void cbMinusculo_CheckedChanged(object sender, EventArgs e)
		{
			txtSenha_TextChanged(sender, e);
		}

		private void nudQtde_ValueChanged(object sender, EventArgs e)
		{
			txtSenha_TextChanged(sender, e);
		}

    }
}
